#pragma once

#include "ParticleEmitter.h"
#include "ParticleModifier.h"




namespace math
{
   template
   <
      typename float_t
   >
   class ParticleScene
   {
   public:

      typedef std::vector<ParticleEmitterPtr>    ParticleEmitterList;
      typedef std::vector<ParticleModifierPtr>   ParticleModifierList;
      typedef std::vector<Particle>              ParticleList;

   private:

      #pragma warning (push)
      #pragma warning (disable: 4251)

      /// This is a list of all particle emitters
      ParticleEmitterList    m_emitters;

      /// This is a list of all particle modifiers
      ParticleModifierList   m_modifiers;

      /// This is a list of all particles in the scene
      ParticleList           m_particles;

      #pragma warning (pop)

   public:

   };
   ///////////////////////////////////////////////////////////////////////////////////////////////
}
///////////////////////////////////////////////////////////////////////////////////////////////////